package com.zenq.ssm.web.ctrl;

import java.util.ArrayList;
import java.util.List;

import javax.servlet.http.HttpSession;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;

import com.zenq.ssm.service.ProductService;
import com.zenq.ssm.utils.WebAppUtil;
import com.zenq.ssm.web.entity.CartItem;

@Controller
@RequestMapping("/cart")
public class CartController {

	@Autowired
	private ProductService productService;
	/**
	 * 将某个商品添加到购物车中
	 * @param pid
	 * @return
	 */
	@RequestMapping("/add/{pid}")
	public String add(@PathVariable int pid) {
		//添加逻辑
		// 1. 判断是否有购物车对象
		List<CartItem> cart = null;
		// 存在session中
		HttpSession session = WebAppUtil.getSession();
		cart = (List<CartItem>) session.getAttribute("cart");
		if (cart == null) {
			cart = new ArrayList<>();
		}
		// 到此处可以保证有了购物车容器
		// 2.判断车中是否有同类型的产品
		boolean flag = false;// 假设不存在同类型的产品
		for (CartItem cartItem : cart) {
			if (cartItem.getProduct().getProductId() == pid) {//两个产品id一致，同一种
				cartItem.setNum(cartItem.getNum() + 1);// 直接加1
				flag = true;
				break;
			}
		}
		if (!flag) {//不存在
			CartItem ci = new CartItem();
			ci.setNum(1);//数量默认为1
			ci.setProduct(productService.getById(pid));
			cart.add(ci);
		}
		// 3. 将购物车保存回到Session中
		session.setAttribute("cart", cart);
		return "redirect:/cart/list";// 跳转到购物车商品列表
	}
	/**
	 * 删除购物车中商品
	 * @param pid
	 * @return
	 */
	@RequestMapping("/del/{pid}")
	public String delete(@PathVariable int pid) {
		return "";
	}
	/**
	 * 列出购物车中商品列表
	 * @return
	 */
	@RequestMapping("/list")
	public String list() {
		return "cart/list";
	}
	/**
	 * 结算
	 * @return
	 */
	@RequestMapping("/cal")
	public String cal() {
		// 1. 判断是否有购物车对象
		List<CartItem> cart = null;
		// 存在session中
		HttpSession session = WebAppUtil.getSession();
		cart = (List<CartItem>) session.getAttribute("cart");
		if (cart == null) {
			return "redirect:/";
		}
		// 购物车中有商品才能进行结算
		// 添加一条订单信息-> 张三-2020-7-21, 00123456789, 总金额 352
		// 依次添加订单明细->
		/*
		 * 00123456789 -> 商品1 ， 数量， 小计
		 * 00123456789 -> 商品2 ， 数量， 小计
		 * 00123456789 -> 商品3 ， 数量， 小计
		 */
		return "redirect:/";
	}
}
